package initial

import (
	"fmt"
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"go.uber.org/zap"
	"go_study/user_web/globle"
)

func GetEnvInfo(env string) bool {
	viper.AutomaticEnv()
	return viper.GetBool(env)
	//刚才设置的环境变量 想要生效 我们必须得重启goland
}

func InitConfig() {
	debug := GetEnvInfo("MXSHOP_DEBUG")
	configFilePrefix := "config"
	configFileName := fmt.Sprintf("user_web/config/%s_pro.yaml", configFilePrefix)
	if debug {
		configFileName = fmt.Sprintf("user_web/config/%s_debug.yaml", configFilePrefix)
	}
	zap.S().Debugf("配置文件路径是: %s", configFileName)

	v := viper.New()
	// 文件的路径如何设置
	v.SetConfigFile(configFileName)
	if err := v.ReadInConfig(); err != nil {
		panic(err)
	}
	if err := v.Unmarshal(globle.ServiceConfig); err != nil {
		panic(err)
	}
	zap.S().Debugf("配置信息是:%v", globle.ServiceConfig)

	//viper的功能 - 动态监控变化
	v.WatchConfig()
	v.OnConfigChange(func(e fsnotify.Event) {
		fmt.Println("config file channed： ", e.Name)
		_ = v.ReadInConfig()
		_ = v.Unmarshal(globle.ServiceConfig)
		zap.S().Debugf("配置信息发生了改变是:%v", globle.ServiceConfig)
	})
}

